# -*- coding: utf-8 -*-
"""
Created on Sat Aug  5 20:44:45 2023

@author: skunk69
"""

import json

chinese_name = u'长处和困难问卷'
english_name = 'Strengths and Difficulties Questionnaire'
abbreviation = 'SDQ'
category = u'一般心理健康与行为问题量表'

outline = u'长处和困难问卷（Strengths and Difficulties Questionnaire，SDQ）由美国心理学家Goodman R于1997年根据精神病诊断和统计手册-IV(DSM-IV)和精神与行为分类第10版(international list of causes of death 10th, ICD-10)诊断标准专门设计和编制的，是一个简明的行为筛查问卷。长处和困难问卷分家长、老师和学生自评3个版本，分别由家长、老师和学生评定。该量表在国内由杜亚松等进行了修订，并制定了上海常模。'
instruction = u'请根据你的孩子、学生或自己过去六个月的经验与事实，回答以下问题，并在“不符合”、“有点符合”、“完全符合”三个选择中选择最符合的一项。'

with open('SDQ.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('.')
    items[key] = value

reverse_items = [7,11,14,21,25]
scales = [u'情绪症状',u'品行问题',u'多动',u'同伴交往问题',u'亲社会行为']
scales_items = [
    [3,8,13,16,24],# 情绪症状
    [5,7,12,18,22],# 品行问题
    [2,10,15,21,25],# 多动
    [6,11,14,19,23],# 同伴交往问题
    [1,4,9,17,20],# 亲社会行为
    ]
check = []
for l in scales_items:
    check = check+l
print(len(check))
check_set = {i for i in sorted(check)}-{i for i in range(1,26)}
print(check_set)

factors = []
factors_scales = []
rating = [u'不符合',u'有点符合',u'完全符合']
score_rules = [0,1,2]

SDQ_scale = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

items = {
    1:u'概括而言，你的孩子、学生或自己在以下方面是否有困难？情绪方面、注意力方面、行为方面还是和别人相处方面？',
    2:u'如果在上题的答案为“是”，请回答：这些困难出现了多久？',
    }
rating = [
    [u'否',u'是（有少许困难）',u'是（有困难）',u'是（有很大困难）'],
    [u'少于1个月',u'1-5个月',u'6至11个月',u'一年以上'],
    ]

questions_scale ={
    'items':items,
    'rating':rating,    
    }

items = {
    1:u'这些困难是否困扰着你的孩子、学生或自己？',
    '2a':u'这些困难是否对你的孩子、学生或自己在下列的日常生活造成干扰：家庭生活？',
    '2b':u'这些困难是否对你的孩子、学生或自己在下列的日常生活造成干扰：与朋友的关系？',
    '2c':u'这些困难是否对你的孩子、学生或自己在下列的日常生活造成干扰：上课学习？',
    '2d':u'这些困难是否对你的孩子、学生或自己在下列的日常生活造成干扰：课余活动？',    
    }
rating = [u'没有',u'轻微',u'非常']
score_rules = [0,1,2]

influence_factor = {
    'items':items,
    'rating':rating,
    'score_rules':score_rules    
    }

contents = {
    'SDQ_scale':SDQ_scale,
    'questions_scale':questions_scale,
    'influence_factor':influence_factor,
    }

implementation = u"""长处和困难问卷(父母版、老师版)由家长和老师根据对4~16岁孩子平时的观察，对孩子近半年的行为、情绪等方面进行评定。学生版由11~16岁儿童自评。"""

reliability = u"""1）SDQ父母版：各条目与问卷总分的相关系数为0.5949，各因子与问卷总分的相关系数为0.784；对45名儿童6周后进行重测，各因子的重测信度为0.434~0.787。父母用版SDQ的条目与相应的因子作相关分析，结果显示各条目与相应的因子均呈正相关，除“偷东西”一项相关系数为0.3120外，其余各条目与其相应的因子的相关系数均在0.469以上，最高达0.769，具有非常显著的统计学意义。
2）SDQ教师版：各条目与问卷总分的Cronbach Alpha系数为0.672，各因子与问卷总分的Cronbacha系数为0.758，各条目与相应因子的Cronbach Alpha系数分别为0.718-0.800.提示教师用SDQ有较好的内部一致性。6周后的重测信度，各因子(情绪问题、行为问题、多动、同伴交往、困难总分、亲社会行为和影响因子)的相关系数分别为0.404，0.495，0.640，0.580，0.500，0.520和0.485(P均<0.01)。将SDQ教师用表的条目与相应的因子作相关分析，结果显示各条目与相应的因子均呈正相关，除“偷东西”一项相关系数为0.323外，其余各条目与其相应的因子的相关系数均在0.5以上，最高达0.910，具有高度统计学意义(P<0.001)。
3）SDQ学生版：各条目与问卷总分的Cronbach Alpha系数为0.581，各因子与问卷总分的Cronbach Alpha系数为0.790，提示学生用SDQ有较好的内部一致性。6周后的重测信度总分的重测相关系数为0.719，各因子的相关系数为0.483~0.743，具有非常显著的统计学意义。将学生用版SDQ的条目与相应的因子作相关分析，结果显示各条目与相应的因子均呈正相关，除“偷东西”一项相关系数为0.387外，其余各条目与其相应的因子的相关系数均在0.472以上，最高达0.738，具有非常显著的统计学意义。"""
validity = u"""1）SDQ父母版：以Conners父母问卷(PSQ)对SDQ进行平行效度分析，在家长填写SDQ的同时也填写PSQ.对PSQ和SDQ的各因子分进行相关分析，除亲社会行为与PSQ各因子呈负相关外，其余各因子与PSQ各因子均呈正相关。实证效度是将常模样本与门诊的47例注意缺陷多动障碍(ADHD)样本进行比较.ADHD组中SDQ的情绪症状、品行问题、多动注意不能、同伴交往、困难总分和社会行为因子得分均高于常模组相应因子得分,差异具有非常显著的统计学意义。
2）SDQ教师版：平行效度是以Conners教师问卷(TRS)对SDQ进行平行效度分析，在老师填写SDQ的同时也填写TRS。对SDQ和TRS的各因子分进行相关分析，仅SDQ的社会行为因子与TRS的各因子呈负相关外，其他因子均呈正相关。实证效度是将常模样本与门诊的47例注意缺陷多动障碍(ADHD)样本进行比较，ADHD组中SDQ的情绪问题、品行问题、多动、同伴交往、困难总分和社会行为因子得分均高于常模组相应因子得分，差异具有非常显著的统计学意义。
3）SDQ学生版：将常模样本与门诊的44例注意缺陷多动障碍(ADHD)样本进行比较，ADHD组中SDQ的情绪症状、品行问题、多动、困难总分、影响因子和问卷总分得分均高于常模组相应得分，差异具有统计学意义。实证效度以DSM-IV诊断标准作效标，用常模的多动因子第92百分位作划界以区分正常、ADHD儿童，SDQ对ADHD儿童的诊断特异度92.6%，灵敏度52.2%，误诊率7.4%，总的诊断符合率为90.4%。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""SDQ的5个因子得分反映了儿童是否存在情绪、品行、多动、同伴交往和亲社会行为这几个方面的问题及其严重程度。困难总分为上述5个因子得分之和，综合反映儿童行为问题的总体情况。此外，根据量表附加的2个问题可以计算出影响因子得分，用于评估行为问题对儿童的学习、生活、人际关系等功能的影响程度。"""
applications = u"""国内由杜亚松等制定了上海常模，给出了SDQ不同版本的正常、边缘水平和异常的划界分。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)
